package com.axzhengxin.platform.business.service;

import com.axzhengxin.platform.business.domain.BizApplyInfo;
import com.axzhengxin.platform.statistics.domain.ProvinceStatistics;
import com.ruoyi.common.core.domain.AjaxResult;

import java.util.List;

/**
 * 客户需求Service接口
 *
 * @author axzhengxin
 * @date 2021-02-20
 */
public interface IBizApplyInfoService
{
    /**
     * 查询客户需求
     *
     * @param reqId 客户需求ID
     * @return 客户需求
     */
    public BizApplyInfo selectBizApplyInfoById(String reqId);

    /**
     * 查询客户需求列表
     *
     * @param bizApplyInfo 客户需求
     * @return 客户需求集合
     */
    public List<BizApplyInfo> selectBizApplyInfoList(BizApplyInfo bizApplyInfo);

    /**
     * 新增客户需求
     *
     * @param bizApplyInfo 客户需求
     * @return 结果
     */
    public int insertBizApplyInfo(BizApplyInfo bizApplyInfo);

    /**
     * 修改客户需求
     *
     * @param bizApplyInfo 客户需求
     * @return 结果
     */
    public int updateBizApplyInfo(BizApplyInfo bizApplyInfo);

    /**
     * 批量删除客户需求
     *
     * @param reqIds 需要删除的客户需求ID
     * @return 结果
     */
    public int deleteBizApplyInfoByIds(String[] reqIds);

    /**
     * 删除客户需求信息
     *
     * @param reqId 客户需求ID
     * @return 结果
     */
    int deleteBizApplyInfoById(String reqId);

    /**
     * 抢单操作
     * @param repId 需求ID
     * @return 数字
     */
    int checkIn(String repId);


    /**
     * 需求抢单列表查询
     * @param bizApplyInfo 需求对象
     * @return list
     */
    List<BizApplyInfo> selectApplyInfoList(BizApplyInfo bizApplyInfo);

    /**
     * 获取待审核列表
     * @param bizApplyInfo 需求对象
     * @return 集合
     */
    List<BizApplyInfo> selectAuditingList(BizApplyInfo bizApplyInfo);

    /**
     * 获取需求信息、企业详情
     * @param bizApplyInfo
     * @return
     */
    BizApplyInfo getBizApplyInfo(BizApplyInfo bizApplyInfo);

    /**
     * 待授信列表
     * @param bizApplyInfo
     * @return
     */
    List<BizApplyInfo> selectApproveList(BizApplyInfo bizApplyInfo);

    /**
     * 待放款订单
     * @param applyInfo
     * @return
     */
    List<BizApplyInfo> loanList(BizApplyInfo applyInfo);

    /**
     * 担保订单
     * @param applyInfo
     * @return
     */
    List<BizApplyInfo> guaranteeList(BizApplyInfo applyInfo);

    List<ProvinceStatistics> getNumericalStatementByDept(List<BizApplyInfo> list);

    List<ProvinceStatistics> getNumericalStatementByDeptYearAndMonth(List<BizApplyInfo> list);
    List<BizApplyInfo> getNumericalStatementByArea(List<BizApplyInfo> list);
    List<ProvinceStatistics> getNumericalStatementByAreaYearAndMonth(List<BizApplyInfo> list);
    List<ProvinceStatistics> getNumericalStatementByCustome(List<BizApplyInfo> list);
    /**
     * 获取授信信息
     * @param bizApplyInfo
     * @return
     */
    BizApplyInfo getApproveInfo(BizApplyInfo bizApplyInfo);

    /**
     * 获取抵押列表
     * @param applyInfo
     * @return
     */
    List<BizApplyInfo> pledgeList(BizApplyInfo applyInfo);

    /**
     * 撤销订单
     * @param reqId
     * @return
     */
    AjaxResult backApply(String reqId);

    /**
     * 保理list
     * @param applyInfo
     * @return
     */
    List<BizApplyInfo> factoringList(BizApplyInfo applyInfo);
}
